package com.woniuxy.springbootmybatis.controller;

import com.woniuxy.springbootmybatis.entity.User;
import com.woniuxy.springbootmybatis.service.IUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/**
 * @author linke
 * @version 1.0
 * @className: UserController
 * @description: user控制器  加日志
 * @date 2021/11/16 20:18
 */
@RestController
@RequestMapping("/userlog")
@Api(value="用户模块",tags = "UserApi")//用在类上对当前类进行解释说明
public class UserLogController {
    private static Logger logger = LoggerFactory.getLogger(UserLogController.class);
    @Resource
    private IUserService userService;
    @ApiOperation(value = "查询所有用户",notes = "返回的是所有用户的信息")
    /*@RequestMapping("/all")*/
    @GetMapping("all")
    public List<User> all(){

        logger.debug("查询全部用户");
        return userService.all();
    }

    /**
     * dataType="int" 代表请求参数类型为int类型，当然也可以是Map、User、String等；
     *
     * paramType="body" 代表参数应该放在请求的什么地方：
     *
     *     header-->放在请求头。请求参数的获取：@RequestHeader(代码中接收注解)
     *     query-->用于get请求的参数拼接。请求参数的获取：@RequestParam(代码中接收注解)
     *     path（用于restful接口）-->请求参数的获取：@PathVariable(代码中接收注解)
     *     body-->放在请求体。请求参数的获取：@RequestBody(代码中接收注解)
     *     form（不常用）
     *
     * @param uid
     * @param name
     * @param age
     * @return
     */
    //@RequestMapping("/add")
    @PostMapping("/add")//restful风格的注解
    @ApiOperation(value = "添加用户",notes = "返回的是boolean值，true表示添加成功，false表示添加失败")
    @ApiImplicitParams({
            @ApiImplicitParam(
                    paramType="query",name="uid",value="用户id",//paramType="query",自动跟参数完成映射
                    dataType="Integer",required=true),
            @ApiImplicitParam(
                    paramType="query",name="name",value="用户姓名",
                    dataType="String",required=true),
            @ApiImplicitParam(
                    paramType="query",name="age",value="年龄",
                    dataType="Integer",required=true)
    })
    public Boolean add(Integer uid,String name,Integer age){
        logger.debug("添加用户");
        Boolean flag = false;
        int row = userService.add(new User(uid,name,age,new Date()));
        if(row > 0){
            flag = true;
        }
        return flag;
    }

    /**
     *
     * 在api  swagger中生成对象model
     * @RequestBody 关联实体类
     * @param user
     * @return
     */
    @PostMapping("/addUser")
    @ApiOperation(value="添加用户",notes = "返回的是boolean值")
    public Boolean addUser(@RequestBody User user){
        logger.debug("添加用户");
        Boolean flag = false;
        int row = userService.add(user);
        if(row > 0){
            flag = true;
        }
        return flag;
    }
    /*public int add(){
        logger.debug("添加用户");
        int row = userService.add(new User(null,"aa",22,new Date()));
        return row;
    }*/

}
